home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch7x < prev    next >
Encoding:
Internet Message Format  |  1990-02-26  |  57.8 KB

  1. Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v09i024:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch7x
  5. Message-ID: <5238@tekred.CNA.TEK.COM>
  6. Date: 24 Feb 90 01:07:04 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 1985
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 9, Issue 24
  13. Archive-name: NetHack3/Patch7x
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.  
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 24 (of 30)."
  25. # Contents:  include/extern.h others/Makefile.os2
  26. # Wrapped by billr@saab on Wed Feb 21 10:04:46 1990
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'include/extern.h' -a "${1}" != "-c" ; then 
  29.   echo shar: Renaming existing file \"'include/extern.h'\" to \"'include/extern.h.orig'\"
  30.   mv -f 'include/extern.h' 'include/extern.h.orig'
  31. fi
  32. echo shar: Extracting \"'include/extern.h'\" \(42056 characters\)
  33. sed "s/^X//" >'include/extern.h' <<'END_OF_FILE'
  34. X/*    SCCS Id: @(#)extern.h    3.0    89/11/22
  35. X/*     Copyright (c)   Steve Creps, 1988.          */
  36. X/* NetHack may be freely redistributed.  See license for details. */
  37. X
  38. X#ifndef EXTERN_H
  39. X#define EXTERN_H
  40. X
  41. X#if defined(MSDOS) && defined(MSC)
  42. X/* MSC include files do not contain "extern" keyword */
  43. X#define E
  44. X#else
  45. X#define E extern
  46. X#endif
  47. X
  48. X/* ### allmain.c ### */
  49. X
  50. XE int NDECL((*occupation));
  51. XE int NDECL((*afternmv));
  52. XE void NDECL(moveloop);
  53. XE void NDECL(stop_occupation);
  54. XE void NDECL(newgame);
  55. X
  56. X/* ### alloc.c ### */
  57. X
  58. X#ifndef __TURBOC__
  59. XE long *FDECL(alloc, (unsigned int));
  60. X#endif
  61. X
  62. X#if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
  63. X
  64. X/* ### amiwbench.c ### */
  65. X
  66. X#ifdef AMIGA_WBENCH
  67. XE void FDECL(ami_wbench_init,(int,char *[]));    
  68. XE void NDECL(ami_wbench_args);
  69. XE int FDECL(ami_wbench_getsave,(int));
  70. XE void FDECL(ami_wbench_unlink,(char *));
  71. XE int FDECL(ami_wbench_iconsize,(char *));
  72. XE void FDECL(ami_wbench_iconwrite,(char *));
  73. XE int FDECL(ami_wbench_badopt,(char *));
  74. XE void NDECL(ami_wbench_cleanup);
  75. X#endif /* AMIGA_WBENCH */
  76. X
  77. X/* ### apply.c ### */
  78. X
  79. X#ifdef OVERLAY
  80. XE int NDECL(dig);
  81. X#endif
  82. XE int NDECL(doapply);
  83. XE int NDECL(holetime);
  84. XE void NDECL(dighole);
  85. XE int NDECL(dorub);
  86. XE int NDECL(dojump);
  87. X#ifdef WALKIES
  88. XE int NDECL(number_leashed);
  89. XE void FDECL(o_unleash, (struct obj *));
  90. XE void FDECL(m_unleash, (struct monst *));
  91. XE void NDECL(unleash_all);
  92. XE boolean NDECL(next_to_u);
  93. XE struct obj *FDECL(get_mleash, (struct monst *));
  94. XE void FDECL(check_leash, (XCHAR_P,XCHAR_P));
  95. X#endif
  96. XE boolean FDECL(um_dist, (XCHAR_P,XCHAR_P,XCHAR_P));
  97. XE int FDECL(use_unicorn_horn, (struct obj *));
  98. X
  99. X/* ### artifact.c ### */
  100. X
  101. X#ifdef NAMED_ITEMS
  102. XE void NDECL(init_exists);
  103. XE void FDECL(mkartifact, (struct obj **));
  104. XE boolean FDECL(is_artifact, (struct obj *));
  105. XE boolean FDECL(exist_artifact, (struct obj *,const char *));
  106. XE void FDECL(artifact_exists, (struct obj *,const char *,BOOLEAN_P));
  107. XE boolean FDECL(spec_ability, (struct obj *,unsigned));
  108. XE int FDECL(restr_name, (struct obj *,char *));
  109. X# if defined(THEOLOGY) && defined(ALTARS)
  110. XE struct obj *FDECL(mk_aligned_artifact, (unsigned));
  111. X# endif
  112. XE int FDECL(defends, (int,struct obj *));
  113. XE int FDECL(spec_abon, (struct obj *,struct permonst *));
  114. XE int FDECL(spec_dbon, (struct obj *,struct permonst *,int));
  115. X#endif
  116. X
  117. X/* ### attrib.c ### */
  118. X
  119. XE void FDECL(adjattrib, (int,int,BOOLEAN_P));
  120. XE void FDECL(change_luck, (SCHAR_P));
  121. XE int FDECL(stone_luck, (BOOLEAN_P));
  122. XE void FDECL(gainstr, (struct obj *,int));
  123. XE void FDECL(losestr, (int));
  124. XE void NDECL(restore_attrib);
  125. XE void FDECL(init_attr, (int));
  126. XE void NDECL(redist_attr);
  127. XE void FDECL(adjabil, (int,int));
  128. XE int NDECL(newhp);
  129. XE schar FDECL(acurr, (int));
  130. XE void FDECL(adjalign, (int));
  131. X
  132. X/* ### bones.c ### */
  133. X
  134. XE void NDECL(savebones);
  135. XE int NDECL(getbones);
  136. XE void FDECL(name_file, (char *,int));
  137. X
  138. X/* ### cmd.c ### */
  139. X
  140. X#ifdef OVERLAY
  141. XE int NDECL(doextcmd);
  142. X#ifdef POLYSELF
  143. XE int NDECL(domonability);
  144. X#endif /* POLYSELF */
  145. XE int NDECL(timed_occupation);
  146. X#if defined(WIZARD) || defined(EXPLORE_MODE)
  147. XE int NDECL(wiz_attributes);
  148. X#endif /* WIZARD */
  149. X# ifdef EXPLORE_MODE
  150. XE int NDECL(enter_explore_mode);
  151. X# endif    /* EXPLORE_MODE */
  152. X#ifdef WIZARD
  153. XE int NDECL(wiz_detect);
  154. XE int NDECL(wiz_genesis);
  155. XE int NDECL(wiz_identify);
  156. XE int NDECL(wiz_level_tele);
  157. XE int NDECL(wiz_map);
  158. XE int NDECL(wiz_where);
  159. XE int NDECL(wiz_wish);
  160. X#endif /* WIZARD */
  161. X#endif /* OVERLAY */
  162. XE void NDECL(reset_occupations);
  163. XE void FDECL(set_occupation, (int NDECL((*)),const char *,int));
  164. X#ifdef REDO
  165. XE char NDECL(pgetchar);
  166. XE void FDECL(pushch, (CHAR_P));
  167. XE void FDECL(savech, (CHAR_P));
  168. X#endif
  169. XE void FDECL(rhack, (char *));
  170. XE char FDECL(lowc, (CHAR_P));
  171. XE void NDECL(enlightenment);
  172. XE int FDECL(xytod, (SCHAR_P,SCHAR_P));
  173. XE void FDECL(dtoxy, (coord *,int));
  174. XE int FDECL(movecmd, (CHAR_P));
  175. XE int FDECL(getdir, (BOOLEAN_P));
  176. XE void NDECL(confdir);
  177. XE int FDECL(isok, (int,int));
  178. XE int NDECL(doextlist);
  179. X
  180. X/* ### dbridge.c ### */
  181. X
  182. XE boolean FDECL(is_pool, (int,int));
  183. X#ifdef STRONGHOLD
  184. XE void FDECL(initsym, (int,int));
  185. XE int FDECL(is_drawbridge_wall, (int, int));
  186. XE boolean FDECL(is_db_wall, (int, int));
  187. XE boolean FDECL(find_drawbridge, (int *, int*));
  188. XE boolean FDECL(create_drawbridge, (int, int, int, BOOLEAN_P));
  189. XE void FDECL(open_drawbridge, (int, int));
  190. XE void FDECL(close_drawbridge, (int, int));
  191. XE void FDECL(destroy_drawbridge, (int, int));
  192. X#endif    /* STRONGHOLD /**/
  193. X
  194. X/* ### decl.c ### */
  195. X
  196. X/* ### demon.c ### */
  197. X
  198. XE void FDECL(dsummon, (struct permonst *));
  199. XE int FDECL(demon_talk, (struct monst *));
  200. XE long FDECL(bribe, (struct monst *));
  201. XE int NDECL(dprince);
  202. XE int NDECL(dlord);
  203. XE int NDECL(ndemon);
  204. X
  205. X/* ### do.c ### */
  206. X
  207. X#ifdef OVERLAY
  208. XE int FDECL(drop, (struct obj *));
  209. XE int NDECL(wipeoff);
  210. X#endif
  211. XE int NDECL(dodrop);
  212. XE boolean FDECL(flooreffects, (struct obj *,int,int));
  213. XE void FDECL(doaltarobj, (struct obj *));
  214. XE boolean FDECL(canletgo, (struct obj *,const char *));
  215. XE void FDECL(dropx, (struct obj *));
  216. XE void FDECL(dropy, (struct obj *));
  217. XE int NDECL(doddrop);
  218. XE int NDECL(dodown);
  219. XE int NDECL(doup);
  220. XE void FDECL(goto_level, (int,BOOLEAN_P,BOOLEAN_P));
  221. XE int NDECL(donull);
  222. XE int NDECL(dowipe);
  223. XE struct obj *FDECL(splitobj, (struct obj *,int));
  224. XE void FDECL(set_wounded_legs, (long,int));
  225. XE void NDECL(heal_legs);
  226. X
  227. X/* ### do_name.c ### */
  228. X
  229. XE void FDECL(getpos, (coord *,int,const char *));
  230. XE struct monst *FDECL(christen_monst, (struct monst *,const char *));
  231. XE int NDECL(do_mname);
  232. XE struct obj *FDECL(oname, (struct obj *,const char *,int));
  233. XE int NDECL(ddocall);
  234. XE void FDECL(docall, (struct obj *));
  235. XE char *FDECL(x_monnam, (struct monst *,int));
  236. XE char *FDECL(lmonnam, (struct monst *));
  237. XE char *FDECL(mon_nam, (struct monst *));
  238. XE char *FDECL(Monnam, (struct monst *));
  239. XE char *FDECL(a_monnam, (struct monst *,const char *));
  240. XE char *FDECL(a2_monnam, (struct monst *,const char *));
  241. XE char *FDECL(Amonnam, (struct monst *,const char *));
  242. XE char *FDECL(Xmonnam, (struct monst *));
  243. XE char *FDECL(defmonnam, (struct monst *));
  244. XE const char *NDECL(rndmonnam);
  245. XE char *FDECL(self_pronoun, (const char *,const char *));
  246. X#ifdef REINCARNATION
  247. XE const char *NDECL(roguename);
  248. X#endif
  249. X
  250. X/* ### do_wear.c ### */
  251. X
  252. X#ifdef OVERLAY
  253. XE int NDECL(Armor_on);
  254. XE int NDECL(Boots_on);
  255. XE int NDECL(Gloves_on);
  256. XE int NDECL(Helmet_on);
  257. XE int FDECL(select_off, (struct obj *otmp));
  258. XE int NDECL(take_off);
  259. X#endif
  260. XE void FDECL(off_msg, (struct obj *));
  261. XE boolean FDECL(is_helmet, (struct obj *));
  262. XE boolean FDECL(is_gloves, (struct obj *));
  263. XE boolean FDECL(is_boots, (struct obj *));
  264. XE boolean FDECL(is_cloak, (struct obj *));
  265. XE boolean FDECL(is_shield, (struct obj *));
  266. XE void NDECL(set_wear);
  267. XE boolean FDECL(donning, (struct obj *));
  268. XE void NDECL(cancel_don);
  269. XE int NDECL(Armor_off);
  270. XE int NDECL(Armor_gone);
  271. XE int NDECL(Helmet_off);
  272. XE int NDECL(Gloves_off);
  273. XE int NDECL(Boots_off);
  274. XE int NDECL(Cloak_off);
  275. XE int NDECL(Shield_off);
  276. XE void NDECL(Amulet_off);
  277. XE void FDECL(Ring_on, (struct obj *));
  278. XE void FDECL(Ring_off, (struct obj *));
  279. XE void FDECL(Ring_gone, (struct obj *));
  280. XE void FDECL(Blindf_on, (struct obj *));
  281. XE void FDECL(Blindf_off, (struct obj *));
  282. XE int NDECL(dotakeoff);
  283. XE int NDECL(doremring);
  284. XE int FDECL(cursed, (struct obj *));
  285. XE int FDECL(armoroff, (struct obj *));
  286. XE int NDECL(dowear);
  287. XE int NDECL(doputon);
  288. XE void NDECL(find_ac);
  289. XE void NDECL(glibr);
  290. XE struct obj *NDECL(some_armor);
  291. XE void NDECL(corrode_armor);
  292. XE void NDECL(reset_remarm);
  293. XE int NDECL(doddoremarm);
  294. XE int FDECL(destroy_arm, (struct obj *));
  295. XE void FDECL(adj_abon, (struct obj *,SCHAR_P));
  296. X
  297. X/* ### dog.c ### */
  298. X
  299. XE void FDECL(initedog, (struct monst *));
  300. XE void FDECL(make_familiar, (struct obj *));
  301. XE struct monst *NDECL(makedog);
  302. XE void NDECL(losedogs);
  303. XE void NDECL(keepdogs);
  304. XE void FDECL(fall_down, (struct monst *,int));
  305. XE int FDECL(dogfood, (struct monst *,struct obj *));
  306. XE int FDECL(inroom, (XCHAR_P,XCHAR_P));
  307. XE int FDECL(tamedog, (struct monst *,struct obj *));
  308. X
  309. X/* ### dogmove.c ### */
  310. X
  311. XE int FDECL(dog_move, (struct monst *,int));
  312. X
  313. X/* ### dokick.c ### */
  314. X
  315. XE boolean FDECL(ghitm, (struct monst *,long));
  316. XE boolean FDECL(bad_kick_throw_pos, (XCHAR_P,XCHAR_P));
  317. XE struct monst *FDECL(ghit, (int,int,int));
  318. XE int NDECL(dokick);
  319. X
  320. X/* ### dothrow.c ### */
  321. X
  322. XE int NDECL(dothrow);
  323. XE int FDECL(throwit, (struct obj *));
  324. XE int FDECL(thitmonst, (struct monst *,struct obj *));
  325. XE int FDECL(breaks, (struct obj *,BOOLEAN_P));
  326. X
  327. X/* ### eat.c ### */
  328. X
  329. X#ifdef OVERLAY
  330. XE int NDECL(Meatdone);
  331. XE int NDECL(eatfood);
  332. XE int NDECL(opentin);
  333. XE int NDECL(unfaint);
  334. X#endif
  335. XE boolean FDECL(is_edible, (struct obj *));
  336. XE void NDECL(init_uhunger);
  337. XE int NDECL(Hear_again);
  338. XE void NDECL(reset_eat);
  339. XE int NDECL(doeat);
  340. XE void NDECL(gethungry);
  341. XE void FDECL(morehungry, (int));
  342. XE void FDECL(lesshungry, (int));
  343. XE boolean NDECL(is_fainted);
  344. XE void NDECL(reset_faint);
  345. XE void NDECL(sync_hunger);
  346. XE void FDECL(newuhs, (BOOLEAN_P));
  347. XE struct obj *FDECL(floorfood, (const char *,BOOLEAN_P));
  348. XE void NDECL(vomit);
  349. XE int FDECL(eaten_stat, (int, struct obj *));
  350. XE void FDECL(food_disappears, (struct obj *));
  351. X
  352. X/* ### end.c ### */
  353. X
  354. XE int NDECL(done1);
  355. XE int NDECL(done2);
  356. XE void FDECL(done_in_by, (struct monst *));
  357. XE void VDECL(panic, (const char *,...));
  358. XE void FDECL(done, (int));
  359. XE void NDECL(clearlocks);
  360. X#ifdef NOSAVEONHANGUP
  361. XE void NDECL(hangup);
  362. X#endif
  363. X
  364. X/* ### engrave.c ### */
  365. X
  366. X#ifdef ELBERETH
  367. XE int FDECL(sengr_at, (const char *,XCHAR_P,XCHAR_P));
  368. X#endif
  369. XE void FDECL(u_wipe_engr, (int));
  370. XE void FDECL(wipe_engr_at, (XCHAR_P,XCHAR_P,XCHAR_P));
  371. XE void FDECL(read_engr_at, (int,int));
  372. XE void FDECL(make_engr_at, (int,int,const char *));
  373. XE int NDECL(freehand);
  374. XE int NDECL(doengrave);
  375. XE void FDECL(save_engravings, (int));
  376. XE void FDECL(rest_engravings, (int));
  377. X
  378. X/* ### exper.c ### */
  379. X
  380. XE long FDECL(newuexp, (unsigned));
  381. XE int FDECL(experience, (struct monst *,int));
  382. XE void FDECL(more_experienced, (int,int));
  383. XE void NDECL(losexp);
  384. XE void NDECL(newexplevel);
  385. XE void NDECL(pluslvl);
  386. XE long NDECL(rndexp);
  387. X
  388. X/* ### extralev.c ### */
  389. X
  390. X#ifdef REINCARNATION
  391. XE void NDECL(makeroguerooms);
  392. XE void FDECL(corr, (int,int));
  393. XE void NDECL(makerogueghost);
  394. X#endif
  395. X
  396. X/* ### fountain.c ### */
  397. X
  398. X#ifdef FOUNTAINS
  399. XE void NDECL(dryup);
  400. XE void NDECL(drinkfountain);
  401. XE void FDECL(dipfountain, (struct obj *));
  402. X#endif /* FOUNTAINS */
  403. X#ifdef SINKS
  404. XE void NDECL(drinksink);
  405. X#endif
  406. X
  407. X/* ### getline.c ### */
  408. X
  409. XE void FDECL(getlin, (char *));
  410. XE void NDECL(getret);
  411. XE void FDECL(cgetret, (const char *));
  412. XE void FDECL(xwaitforspace, (const char *));
  413. XE char *NDECL(parse);
  414. XE char NDECL(readchar);
  415. X#ifdef COM_COMPL
  416. XE void FDECL(get_ext_cmd, (char *));
  417. X#endif /* COM_COMPL */
  418. X
  419. X/* ### hack.c ### */
  420. X
  421. XE void NDECL(unsee);
  422. XE void FDECL(seeoff, (int));
  423. XE void FDECL(movobj, (struct obj *,XCHAR_P,XCHAR_P));
  424. XE boolean FDECL(may_dig, (XCHAR_P,XCHAR_P));
  425. XE void NDECL(domove);
  426. XE void NDECL(spoteffects);
  427. XE int NDECL(dopickup);
  428. XE void NDECL(lookaround);
  429. XE int NDECL(monster_nearby);
  430. XE int FDECL(cansee, (XCHAR_P,XCHAR_P));
  431. XE int FDECL(sgn, (int));
  432. XE void FDECL(getcorners, (xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *));
  433. XE void NDECL(setsee);
  434. XE void FDECL(nomul, (int));
  435. XE void FDECL(losehp, (int,const char *,BOOLEAN_P));
  436. XE int NDECL(weight_cap);
  437. XE int NDECL(inv_weight);
  438. XE int NDECL(inv_cnt);
  439. XE int FDECL(identify, (struct obj *));
  440. X#ifdef STUPID_CPP    /* otherwise these functions are macros in hack.h */
  441. XE char NDECL(yn);
  442. XE char NDECL(ynq);
  443. XE char NDECL(ynaq);
  444. XE char NDECL(nyaq);
  445. XE char *FDECL(plur, (long));
  446. XE void FDECL(makeknown, (unsigned));
  447. X#endif
  448. X
  449. X/* ### invent.c ### */
  450. X
  451. X#ifdef OVERLAY
  452. XE int FDECL(ckunpaid, (struct obj *));
  453. X#endif
  454. XE struct obj *FDECL(addinv, (struct obj *));
  455. XE void FDECL(useup, (struct obj *));
  456. XE void FDECL(freeinv, (struct obj *));
  457. XE void FDECL(delobj, (struct obj *));
  458. XE void FDECL(freeobj, (struct obj *));
  459. XE void FDECL(freegold, (struct gold *));
  460. XE struct obj *FDECL(sobj_at, (int,int,int));
  461. XE int FDECL(carried, (struct obj *));
  462. XE struct obj *FDECL(carrying, (int));
  463. XE boolean NDECL(have_lizard);
  464. XE struct obj *FDECL(o_on, (unsigned int,struct obj *));
  465. XE boolean FDECL(obj_here, (struct obj *,int,int));
  466. XE struct gold *FDECL(g_at, (int,int));
  467. XE struct obj *FDECL(getobj, (const char *,const char *));
  468. XE int FDECL(ggetobj, (const char *,int FDECL((*),(struct obj *)),int));
  469. XE int FDECL(askchain, (struct obj *,int,const char *,int,int FDECL((*),(struct obj *)),int FDECL((*),(struct obj *)),int,const char *));
  470. XE void FDECL(prinv, (struct obj *));
  471. XE int NDECL(ddoinv);
  472. XE void FDECL(doinv, (const char *));
  473. XE int NDECL(dotypeinv);
  474. XE int NDECL(dolook);
  475. XE void FDECL(stackobj, (struct obj *));
  476. XE int NDECL(doprgold);
  477. XE int NDECL(doprwep);
  478. XE int NDECL(doprarm);
  479. XE int NDECL(doprring);
  480. XE int NDECL(dopramulet);
  481. XE int NDECL(doprtool);
  482. XE int FDECL(digit, (CHAR_P));
  483. XE void FDECL(useupf, (struct obj *));
  484. XE char *FDECL(let_to_name, (CHAR_P));
  485. XE void NDECL(reassign);
  486. X
  487. X/* ### ioctl.c ### */
  488. X
  489. X#ifdef UNIX
  490. XE void NDECL(getioctls);
  491. XE void NDECL(setioctls);
  492. X# ifdef SUSPEND
  493. XE int NDECL(dosuspend);
  494. X# endif /* SUSPEND */
  495. X#endif /* UNIX */
  496. X
  497. X/* ### lock.c ### */
  498. X
  499. X#ifdef OVERLAY
  500. XE int NDECL(forcelock);
  501. XE int NDECL(picklock);
  502. X#endif
  503. XE void NDECL(reset_pick);
  504. XE int FDECL(pick_lock, (struct obj *));
  505. XE int NDECL(doforce);
  506. XE int FDECL(boxlock, (struct obj *,struct obj *));
  507. XE int FDECL(doorlock, (struct obj *,int,int));
  508. XE int NDECL(doopen);
  509. XE int NDECL(doclose);
  510. X
  511. X/* ### mac.c ### */
  512. X/* All of these Mac-specific declarations LOOK like they should take the
  513. X   NDECL() form, but don't be fooled: it's just that (at the time of
  514. X   writing) the Mac C compilers are all pre-ANSI and the prototype
  515. X   information isn't recorded here anyway. sps 89dec14
  516. X*/
  517. X#ifdef MACOS
  518. XE int tgetch();
  519. XE void gethdate();
  520. XE int uptodate();
  521. X# ifndef THINKC4
  522. XE char *getenv();
  523. XE int memcmp();
  524. X# else
  525. XE int kbhit();
  526. X# endif
  527. XE int mcurs();
  528. XE int mputc();
  529. XE int mputs();
  530. XE int mprintf();
  531. XE DialogTHndl centreDlgBox();
  532. XE int about();
  533. X#endif  /* MACOS */
  534. X
  535. X/* ### macfile.c ### */
  536. X#ifdef MACOS
  537. XE short findNamedFile();
  538. XE FILE *openFile();
  539. X#endif    /* MACOS */
  540. X
  541. X/* ### macinit.c ### */
  542. X#ifdef MACOS
  543. XE int initterm();
  544. XE int freeterm();
  545. XE int read_config_file();
  546. XE int write_opts();
  547. X#endif
  548. X#ifdef SMALLDATA
  549. XE void init_decl();
  550. XE void free_decl();
  551. X#endif  /* SMALLDATA */
  552. X
  553. X/* ### mail.c ### */
  554. X
  555. X#ifdef MAIL
  556. X# ifdef UNIX
  557. XE void NDECL(getmailstatus);
  558. X# endif
  559. XE void NDECL(ckmailstatus);
  560. XE void NDECL(readmail);
  561. X#endif /* MAIL */
  562. X
  563. X/* ### makemon.c ### */
  564. X
  565. XE struct monst *FDECL(makemon, (struct permonst *,int,int));
  566. XE void FDECL(enexto, (coord *,XCHAR_P,XCHAR_P,struct permonst *));
  567. XE int FDECL(goodpos, (int,int, struct permonst *));
  568. XE void FDECL(rloc, (struct monst *));
  569. XE void FDECL(vloc, (struct monst *));
  570. XE void NDECL(init_monstr);
  571. XE struct permonst *NDECL(rndmonst);
  572. XE struct permonst *FDECL(mkclass, (CHAR_P));
  573. XE int FDECL(adj_lev, (struct permonst *));
  574. XE struct permonst *FDECL(grow_up, (struct monst *));
  575. XE int FDECL(mongets, (struct monst *,int));
  576. X#ifdef GOLEMS
  577. XE int FDECL(golemhp, (int));
  578. X#endif /* GOLEMS */
  579. XE boolean FDECL(peace_minded, (struct permonst *));
  580. XE void FDECL(set_malign, (struct monst *));
  581. XE void FDECL(set_mimic_sym, (struct monst *));
  582. X
  583. X/* ### mcastu.c ### */
  584. X
  585. XE int FDECL(castmu, (struct monst *,struct attack *));
  586. XE int FDECL(buzzmu, (struct monst *,struct attack *));
  587. X
  588. X/* ### mhitm.c ### */
  589. X
  590. XE int FDECL(fightm, (struct monst *));
  591. XE int FDECL(mattackm, (struct monst *,struct monst *));
  592. XE int FDECL(noattacks, (struct permonst *));
  593. X
  594. X/* ### mhitu.c ### */
  595. X
  596. X#ifdef POLYSELF
  597. XE struct monst *NDECL(cloneu);
  598. X#endif
  599. XE void FDECL(expels, (struct monst *,struct permonst *,BOOLEAN_P));
  600. XE int FDECL(mattacku, (struct monst *));
  601. XE void FDECL(mdamageu, (struct monst *,int));
  602. XE int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
  603. X#ifdef SEDUCE
  604. XE int FDECL(doseduce, (struct monst *));
  605. X#endif
  606. X
  607. X/* ### mklev.c ### */
  608. X
  609. XE int FDECL(somex, (struct mkroom *));
  610. XE int FDECL(somey, (struct mkroom *));
  611. X#ifdef ORACLE
  612. XE boolean FDECL(place_oracle, (struct mkroom *,int *,int *,int *));
  613. X#endif
  614. XE void NDECL(mklev);
  615. XE int FDECL(okdoor, (XCHAR_P,XCHAR_P));
  616. XE void FDECL(dodoor, (int,int,struct mkroom *));
  617. XE void FDECL(mktrap, (int,int,struct mkroom *));
  618. XE void FDECL(mkfount, (int,struct mkroom *));
  619. X
  620. X/* ### mkmaze.c ### */
  621. X
  622. X#if defined(WALLIFIED_MAZE) || defined(STRONGHOLD)
  623. XE void FDECL(wallification, (int,int,int,int,BOOLEAN_P));
  624. X#endif
  625. XE void FDECL(walkfrom, (int,int));
  626. XE void NDECL(makemaz);
  627. XE void FDECL(move, (int *,int *,int));
  628. XE void FDECL(mazexy, (coord *));
  629. XE void NDECL(bound_digging);
  630. X
  631. X/* ### mkobj.c ### */
  632. X
  633. XE struct obj *FDECL(mkobj_at, (CHAR_P,int,int));
  634. XE struct obj *FDECL(mksobj_at, (int,int,int));
  635. XE struct obj *FDECL(mkobj, (CHAR_P,BOOLEAN_P));
  636. XE int NDECL(rndmonnum);
  637. XE struct obj *FDECL(mksobj, (int,BOOLEAN_P));
  638. XE int FDECL(letter, (int));
  639. XE int FDECL(weight, (struct obj *));
  640. XE void FDECL(mkgold, (long,int,int));
  641. XE struct obj *FDECL(mkcorpstat, (int,struct permonst *,int,int));
  642. XE struct obj *FDECL(mk_tt_object, (int,int,int));
  643. XE struct obj *FDECL(mk_named_object, (int,struct permonst *,int,int,char *,int));
  644. XE void FDECL(bless, (struct obj *));
  645. XE void FDECL(curse, (struct obj *));
  646. XE void FDECL(blessorcurse, (struct obj *,int));
  647. XE boolean FDECL(is_flammable, (struct obj *));
  648. X#ifdef STUPID_CPP
  649. XE boolean FDECL(is_rustprone, (struct obj *));
  650. XE boolean FDECL(is_corrodeable, (struct obj *));
  651. XE boolean FDECL(OBJ_AT, (int, int));
  652. X#endif
  653. XE void FDECL(place_object, (struct obj *,int,int));
  654. XE void FDECL(move_object, (struct obj *,int,int));
  655. XE void FDECL(remove_object, (struct obj *));
  656. XE int FDECL(bcsign, (struct obj *));
  657. X
  658. X/* ### mkroom.c ### */
  659. X
  660. XE void FDECL(mkroom, (int));
  661. XE void FDECL(shrine_pos, (int *, int*, struct mkroom *));
  662. XE boolean FDECL(nexttodoor, (int,int));
  663. XE boolean FDECL(has_dnstairs, (struct mkroom *));
  664. XE boolean FDECL(has_upstairs, (struct mkroom *));
  665. XE int FDECL(dist2, (int,int,int,int));
  666. XE struct permonst *NDECL(courtmon);
  667. X
  668. X/* ### mon.c ### */
  669. X
  670. XE void NDECL(movemon);
  671. XE void FDECL(meatgold, (struct monst *));
  672. XE void FDECL(meatobj, (struct monst *));
  673. XE void FDECL(mpickgold, (struct monst *));
  674. XE void FDECL(mpickgems, (struct monst *));
  675. XE int FDECL(curr_mon_load, (struct monst *));
  676. XE int FDECL(max_mon_load, (struct monst *));
  677. XE boolean FDECL(can_carry, (struct monst *,struct obj *));
  678. XE void FDECL(mpickstuff, (struct monst *,const char *));
  679. XE int FDECL(mfndpos, (struct monst *,coord *,long *,long));
  680. XE int FDECL(dist, (int,int));
  681. XE boolean FDECL(monnear, (struct monst *,int,int));
  682. XE void FDECL(poisontell, (int));
  683. XE void FDECL(poisoned, (const char *,int,const char *,int));
  684. XE void FDECL(mondead, (struct monst *));
  685. XE void FDECL(replmon, (struct monst *,struct monst *));
  686. XE void FDECL(relmon, (struct monst *));
  687. XE void FDECL(monfree, (struct monst *));
  688. XE void FDECL(unstuck, (struct monst *));
  689. XE void FDECL(killed, (struct monst *));
  690. XE void FDECL(xkilled, (struct monst *,int));
  691. XE void NDECL(rescham);
  692. XE void NDECL(restartcham);
  693. XE int FDECL(newcham, (struct monst *,struct permonst *));
  694. XE void FDECL(mnexto, (struct monst *));
  695. XE void FDECL(mnearto, (struct monst *, XCHAR_P, XCHAR_P, BOOLEAN_P));
  696. XE void FDECL(setmangry, (struct monst *));
  697. XE int FDECL(disturb, (struct monst *));
  698. XE void FDECL(mondied, (struct monst *));
  699. XE void FDECL(mongone, (struct monst *));
  700. XE void FDECL(monstone, (struct monst *));
  701. X#ifdef GOLEMS
  702. XE void FDECL(golemeffects, (struct monst *, int, int));
  703. X#endif /* GOLEMS */
  704. X
  705. X/* ### mondata.c ### */
  706. X
  707. XE boolean FDECL(attacktype, (struct permonst *,int));
  708. XE boolean FDECL(resists_ston, (struct permonst *));
  709. XE boolean FDECL(resists_drli, (struct permonst *));
  710. XE boolean FDECL(ranged_attk, (struct permonst *));
  711. XE boolean FDECL(can_track, (struct permonst *));
  712. X#ifdef POLYSELF
  713. XE boolean FDECL(breakarm, (struct permonst *));
  714. XE boolean FDECL(sliparm, (struct permonst *));
  715. X#endif
  716. XE boolean FDECL(sticks, (struct permonst *));
  717. XE boolean FDECL(canseemon, (struct monst *));
  718. XE boolean FDECL(dmgtype, (struct permonst *,int));
  719. XE int FDECL(monsndx, (struct permonst *));
  720. XE int FDECL(name_to_mon, (char *));
  721. X#ifdef POLYSELF
  722. XE boolean FDECL(webmaker, (struct permonst *));
  723. X#endif
  724. XE boolean FDECL(is_female, (struct monst *));
  725. XE int FDECL(gender, (struct monst *));
  726. XE boolean FDECL(levl_follower, (struct monst *));
  727. XE struct permonst *NDECL(player_mon);
  728. XE int FDECL(little_to_big, (int));
  729. XE int FDECL(big_to_little, (int));     
  730. XE const char *FDECL(locomotion, (const struct permonst *,const char *));
  731. X
  732. X/* ### monmove.c ### */
  733. X
  734. XE boolean FDECL(mb_trapped, (struct monst *));
  735. XE int FDECL(dochugw, (struct monst *));
  736. XE boolean FDECL(onscary, (int,int,struct monst *));
  737. XE int FDECL(dochug, (struct monst *));
  738. XE int FDECL(m_move, (struct monst *,int));
  739. XE boolean FDECL(closed_door, (int, int));
  740. XE boolean FDECL(accessible, (int, int));
  741. XE void FDECL(set_apparxy, (struct monst *));
  742. XE boolean FDECL(mdig_tunnel, (struct monst *));
  743. X#ifdef STUPID_CPP
  744. XE boolean FDECL(MON_AT, (int, int));
  745. XE void FDECL(place_monster, (struct monst *, int, int));
  746. XE void FDECL(place_worm_seg, (struct monst *, int, int));
  747. XE void FDECL(remove_monster, (int, int));
  748. XE struct monst *FDECL(m_at, (int, int));
  749. X#endif
  750. X
  751. X/* ### monst.c ### */
  752. X
  753. X/* ### msdos.c ### */
  754. X
  755. X#ifdef MSDOS
  756. XE void NDECL(flushout);
  757. XE int NDECL(tgetch);
  758. XE int NDECL(dosh);
  759. X# ifdef DGK
  760. XE long FDECL(freediskspace, (char *));
  761. XE long FDECL(filesize, (char *));
  762. XE void FDECL(eraseall, (const char *,const char *));
  763. XE void FDECL(copybones, (int));
  764. XE void NDECL(playwoRAMdisk);
  765. XE int FDECL(saveDiskPrompt, (int));
  766. XE void NDECL(gameDiskPrompt);
  767. X# endif
  768. XE void NDECL(read_config_file);
  769. XE void NDECL(set_lock_and_bones);
  770. XE void FDECL(append_slash, (char *));
  771. XE void FDECL(getreturn, (const char *));
  772. XE void VDECL(msmsg, (const char *,...));
  773. XE void FDECL(chdrive, (char *));
  774. X# ifndef TOS
  775. XE void NDECL(disable_ctrlP);
  776. XE void NDECL(enable_ctrlP);
  777. X# endif
  778. X# ifdef DGK
  779. XE FILE *FDECL(fopenp, (const char *,const char *));
  780. X# endif
  781. XE void FDECL(msexit, (int));
  782. X# ifdef DGK
  783. XE void NDECL(get_scr_size);
  784. X#  ifndef TOS
  785. XE void FDECL(gotoxy, (int,int));
  786. X#  endif
  787. X# endif
  788. X#endif /* MSDOS */
  789. X#ifdef TOS
  790. XE int FDECL(_copyfile, (char *, char *));
  791. XE int NDECL(kbhit);
  792. XE void NDECL(restore_colors);
  793. XE void NDECL(set_colors);
  794. X#endif /* TOS */
  795. X
  796. X/* ### mthrowu.c ### */
  797. X
  798. XE int FDECL(thitu, (int,int,struct obj *,const char *));
  799. XE int FDECL(thrwmu, (struct monst *));
  800. XE int FDECL(spitmu, (struct monst *,struct attack *));
  801. XE int FDECL(breamu, (struct monst *,struct attack *));
  802. XE boolean FDECL(linedup, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
  803. XE boolean FDECL(lined_up, (struct monst *));
  804. XE struct obj *FDECL(m_carrying, (struct monst *,int));
  805. XE void FDECL(m_useup, (struct monst *,struct obj *));
  806. X
  807. X/* ### music.c ### */
  808. X
  809. X#ifdef MUSIC
  810. XE int FDECL(do_play_instrument, (struct obj *));
  811. X#endif /* MUSIC /**/
  812. X
  813. X/* ### o_init.c ### */
  814. X
  815. XE int FDECL(letindex, (CHAR_P));
  816. XE void NDECL(init_objects);
  817. XE void NDECL(oinit);
  818. XE void FDECL(savenames, (int));
  819. XE void FDECL(restnames, (int));
  820. XE int NDECL(dodiscovered);
  821. X
  822. X/* ### objnam.c ### */
  823. X
  824. XE char *FDECL(typename, (int));
  825. XE char *FDECL(distant_name, (struct obj *, char *(*)(struct obj *)));
  826. XE char *FDECL(xname, (struct obj *));
  827. XE char *FDECL(doname, (struct obj *));
  828. XE char *FDECL(singular, (struct obj *, char *(*)(struct obj *)));
  829. XE char *FDECL(an, (const char *));
  830. XE char *FDECL(An, (const char *));
  831. XE char *FDECL(aobjnam, (struct obj *,const char *));
  832. XE char *FDECL(Doname2, (struct obj *));
  833. XE void FDECL(lcase, (char *));
  834. XE char *FDECL(makeplural, (const char *));
  835. XE char *FDECL(makesingular, (const char *));
  836. XE struct obj *FDECL(readobjnam, (char *));
  837. X
  838. X/* ### options.c ### */
  839. X
  840. XE void NDECL(initoptions);
  841. XE void FDECL(assign_graphics, (unsigned int *, int));
  842. XE void FDECL(parseoptions, (char *,BOOLEAN_P));
  843. XE int NDECL(doset);
  844. XE int NDECL(dotogglepickup);
  845. XE void NDECL(option_help);
  846. XE int FDECL(next_opt, (const char *));
  847. X#ifdef TUTTI_FRUTTI
  848. XE int FDECL(fruitadd, (char *));
  849. X#endif
  850. X
  851. X/* ### pager.c ### */
  852. X
  853. XE int NDECL(dowhatis);
  854. XE int NDECL(dowhatdoes);
  855. XE void NDECL(set_whole_screen);
  856. X#ifdef NEWS
  857. XE int NDECL(readnews);
  858. X#endif /* NEWS */
  859. XE void FDECL(set_pager, (int));
  860. XE int FDECL(page_line, (const char *));
  861. XE void FDECL(cornline, (int,const char *));
  862. XE int NDECL(dohelp);
  863. XE int NDECL(dohistory);
  864. XE int FDECL(page_file, (const char *,BOOLEAN_P));
  865. X#ifdef UNIX
  866. X# ifdef SHELL
  867. XE int NDECL(dosh);
  868. X# endif /* SHELL */
  869. X# if defined(SHELL) || defined(DEF_PAGER) || defined(DEF_MAILREADER)
  870. XE int FDECL(child, (int));
  871. X# endif
  872. X#endif /* UNIX */
  873. X
  874. X/* ### pcmain.c ### */
  875. X
  876. X#if defined(MSDOS) || defined(MACOS)
  877. XE void NDECL(askname);
  878. X# ifdef CHDIR
  879. XE void FDECL(chdirx, (char *,BOOLEAN_P));
  880. X# endif /* CHDIR */
  881. X#endif /* MSDOS || MACOS */
  882. X
  883. X/* ### pctty.c ### */
  884. X
  885. X#if defined(MSDOS) || defined(MACOS)
  886. XE void NDECL(gettty);
  887. XE void FDECL(settty, (const char *));
  888. XE void VDECL(error, (const char *,...));
  889. X#endif /* MSDOS || MACOS  */
  890. X
  891. X/* ### pcunix.c ### */
  892. X
  893. X#if defined(MSDOS) || defined(MACOS)
  894. X# ifndef OLD_TOS
  895. XE void NDECL(setrandom);
  896. XE int NDECL(getyear);
  897. XE char *NDECL(getdate);
  898. XE int NDECL(phase_of_the_moon);
  899. XE int NDECL(night);
  900. XE int NDECL(midnight);
  901. XE void FDECL(gethdate, (char *));
  902. XE int FDECL(uptodate, (int));
  903. X# endif /* TOS */
  904. XE void FDECL(regularize, (char *));
  905. X#endif /* MSDOS */
  906. X
  907. X/* ### pickup.c ### */
  908. X
  909. X#ifdef OVERLAY
  910. XE int FDECL(ck_bag, (struct obj *));
  911. XE int FDECL(ck_container, (struct obj *));
  912. XE int FDECL(in_container, (struct obj *));
  913. XE int FDECL(out_container, (struct obj *));
  914. X#endif
  915. XE void FDECL(pickup, (int));
  916. XE struct obj *FDECL(pick_obj, (struct obj *));
  917. XE int NDECL(doloot);
  918. XE void NDECL(get_all_from_box);
  919. XE void FDECL(use_container, (struct obj *, int));
  920. XE void FDECL(inc_cwt, (struct obj *, struct obj *));
  921. XE void FDECL(delete_contents, (struct obj *));
  922. XE void FDECL(dec_cwt, (struct obj *, struct obj *));
  923. X
  924. X/* ### polyself.c ### */
  925. X
  926. XE void NDECL(newman);
  927. X#ifdef POLYSELF
  928. XE void NDECL(polyself);
  929. XE int FDECL(polymon, (int));
  930. XE void NDECL(rehumanize);
  931. XE int NDECL(dobreathe);
  932. XE int NDECL(dospit);
  933. XE int NDECL(doremove);
  934. XE int NDECL(dospinweb);
  935. XE int NDECL(dosummon);
  936. XE int NDECL(doconfuse);
  937. XE int NDECL(dohide);
  938. X#endif
  939. XE const char *FDECL(body_part, (int));
  940. XE int NDECL(poly_gender);
  941. X#ifdef POLYSELF
  942. X# ifdef GOLEMS
  943. XE void FDECL(ugolemeffects, (int, int));
  944. X# endif /* GOLEMS */
  945. X#endif
  946. X
  947. X/* ### potion.c ### */
  948. X
  949. XE void FDECL(make_confused, (long,BOOLEAN_P));
  950. XE void FDECL(make_stunned, (long,BOOLEAN_P));
  951. XE void FDECL(make_blinded, (long,BOOLEAN_P));
  952. XE void FDECL(make_sick, (long,BOOLEAN_P));
  953. XE void FDECL(make_vomiting, (long,BOOLEAN_P));
  954. XE void FDECL(make_hallucinated, (long,BOOLEAN_P));
  955. XE int NDECL(dodrink);
  956. XE int FDECL(dopotion, (struct obj *));
  957. XE int FDECL(peffects, (struct obj *));
  958. XE void FDECL(healup, (int,int,BOOLEAN_P,BOOLEAN_P));
  959. XE void FDECL(strange_feeling, (struct obj *,const char *));
  960. XE void FDECL(potionhit, (struct monst *,struct obj *));
  961. XE void FDECL(potionbreathe, (struct obj *));
  962. XE boolean FDECL(get_wet, (struct obj *));
  963. XE int NDECL(dodip);
  964. XE void FDECL(djinni_from_bottle, (struct obj *));
  965. XE int FDECL(monster_detect, (struct obj *));
  966. XE int FDECL(object_detect, (struct obj *));
  967. XE int FDECL(trap_detect, (struct obj *));
  968. X
  969. X/* ### pray.c ### */
  970. X
  971. X# ifdef THEOLOGY
  972. XE int NDECL(dosacrifice);
  973. XE int NDECL(dopray);
  974. XE const char *NDECL(u_gname);
  975. X#endif /* THEOLOGY */
  976. XE int NDECL(doturn);
  977. X#ifdef ALTARS
  978. XE const char *NDECL(a_gname);
  979. XE const char *FDECL(a_gname_at, (XCHAR_P,XCHAR_P));
  980. X# ifdef THEOLOGY
  981. XE void FDECL(altar_wrath, (int,int));
  982. X# endif
  983. X#endif
  984. X
  985. X/* ### pri.c ### */
  986. X
  987. XE char *FDECL(eos, (char *));
  988. XE void FDECL(swallowed, (int));
  989. XE void NDECL(setclipped);
  990. X#ifdef CLIPPING
  991. XE void FDECL(cliparound, (int, int));
  992. X#endif
  993. XE boolean FDECL(showmon, (struct monst *));
  994. XE void FDECL(at, (XCHAR_P,XCHAR_P,UCHAR_P,UCHAR_P));
  995. XE void NDECL(prme);
  996. XE void FDECL(shieldeff, (XCHAR_P,XCHAR_P));
  997. XE int NDECL(doredraw);
  998. XE void NDECL(docrt);
  999. XE void FDECL(docorner, (int,int));
  1000. XE void NDECL(seeglds);
  1001. XE void NDECL(seeobjs);
  1002. XE void NDECL(seemons);
  1003. XE void FDECL(pmon, (struct monst *));
  1004. XE void FDECL(unpmon, (struct monst *));
  1005. XE void NDECL(nscr);
  1006. XE void NDECL(bot);
  1007. XE void FDECL(mstatusline, (struct monst *));
  1008. XE void NDECL(ustatusline);
  1009. XE void NDECL(cls);
  1010. XE void NDECL(max_rank_sz);
  1011. XE char NDECL(rndmonsym);
  1012. XE char NDECL(rndobjsym);
  1013. XE const char *NDECL(hcolor);
  1014. XE uchar FDECL(mimic_appearance, (struct monst *));
  1015. X
  1016. X/* ### priest.c ### */
  1017. X
  1018. XE int FDECL(move_special, (struct monst *,SCHAR_P,SCHAR_P,BOOLEAN_P,BOOLEAN_P,
  1019. X            XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
  1020. X#if defined(ALTARS) && defined(THEOLOGY)
  1021. XE struct mkroom *FDECL(in_temple, (int,int));
  1022. XE int FDECL(pri_move, (struct monst *));
  1023. XE void FDECL(priestini, (int,int,int,int));
  1024. XE char *FDECL(priestname, (struct monst *));
  1025. XE boolean FDECL(p_coaligned, (struct monst *));
  1026. XE void NDECL(intemple);
  1027. XE void FDECL(priest_talk, (struct monst *));
  1028. XE boolean FDECL(u_in_sanctuary, (struct mkroom *));
  1029. XE void NDECL(ghod_hitsu);
  1030. XE void NDECL(angry_priest);
  1031. X#endif
  1032. X
  1033. X/* ### prisym.c ### */
  1034. X
  1035. XE void FDECL(atl, (int,int,CHAR_P));
  1036. XE void FDECL(on_scr, (int,int));
  1037. XE void FDECL(tmp_at, (int,int));
  1038. XE void FDECL(Tmp_at2, (int,int));
  1039. XE void NDECL(curs_on_u);
  1040. XE void NDECL(pru);
  1041. XE void FDECL(prl, (int,int));
  1042. XE uchar FDECL(news0, (XCHAR_P,XCHAR_P));
  1043. XE void FDECL(newsym, (int,int));
  1044. XE void FDECL(mnewsym, (int,int));
  1045. XE void FDECL(nosee, (int,int));
  1046. XE void FDECL(prl1, (int,int));
  1047. XE void FDECL(nose1, (int,int));
  1048. XE int FDECL(vism_at, (int,int));
  1049. X#ifdef NEWSCR
  1050. XE void FDECL(pobj, (struct obj *));
  1051. X#endif /* NEWSCR */
  1052. XE void FDECL(unpobj, (struct obj *));
  1053. X#ifdef STUPID_CPP    /* otherwise these functions are macros in rm.h */
  1054. XE boolean FDECL(IS_WALL, (unsigned));
  1055. XE boolean FDECL(IS_STWALL, (unsigned));
  1056. XE boolean FDECL(IS_ROCK, (unsigned));
  1057. XE boolean FDECL(IS_DOOR, (unsigned));
  1058. XE boolean FDECL(ACCESSIBLE, (unsigned));
  1059. XE boolean FDECL(IS_ROOM, (unsigned));
  1060. XE boolean FDECL(ZAP_POS, (unsigned));
  1061. XE boolean FDECL(SPACE_POS, (unsigned));
  1062. XE boolean FDECL(IS_POOL, (unsigned));
  1063. XE boolean FDECL(IS_THRONE, (unsigned));
  1064. XE boolean FDECL(IS_FOUNTAIN, (unsigned));
  1065. XE boolean FDECL(IS_SINK, (unsigned));
  1066. XE boolean FDECL(IS_ALTAR, (unsigned));
  1067. XE boolean FDECL(IS_DRAWBRIDGE, (unsigned));
  1068. XE boolean FDECL(IS_FURNITURE, (unsigned));
  1069. X#endif /* STUPID_CPP */
  1070. X
  1071. X/* ### read.c ### */
  1072. X
  1073. XE int NDECL(doread);
  1074. XE int FDECL(seffects, (struct obj *));
  1075. XE void FDECL(litroom, (BOOLEAN_P));
  1076. XE void FDECL(do_genocide, (int));
  1077. XE void NDECL(do_mapping);
  1078. XE void NDECL(do_vicinity_map);
  1079. XE int FDECL(gold_detect, (struct obj *));
  1080. XE int FDECL(food_detect, (struct obj *));
  1081. XE void FDECL(punish, (struct obj *));
  1082. XE void NDECL(unpunish);
  1083. XE boolean FDECL(cant_create, (int *));
  1084. X#if defined(WIZARD) || defined(EXPLORE_MODE)
  1085. XE boolean NDECL(create_particular);
  1086. X#endif
  1087. X
  1088. X/* ### restore.c ### */
  1089. X
  1090. XE int FDECL(dorecover, (int));
  1091. XE void FDECL(getlev, (int,int,XCHAR_P,BOOLEAN_P));
  1092. X#ifdef ZEROCOMP
  1093. XE void NDECL(minit);
  1094. XE int FDECL(mread, (int,genericptr_t,unsigned int));
  1095. X#else
  1096. XE void FDECL(mread, (int,genericptr_t,unsigned int));
  1097. X#endif
  1098. X
  1099. X/* ### rip.c ### */
  1100. X
  1101. XE void NDECL(outrip);
  1102. X
  1103. X/* ### rnd.c ### */
  1104. X
  1105. XE int FDECL(rn1, (int,int));
  1106. XE int FDECL(rn2, (int));
  1107. XE int FDECL(rnl, (int));
  1108. XE int FDECL(rnd, (int));
  1109. XE int FDECL(d, (int,int));
  1110. XE int FDECL(rne, (int));
  1111. X#ifdef THEOLOGY
  1112. XE int FDECL(rnz, (int));
  1113. X#endif
  1114. X
  1115. X/* ### rumors.c ### */
  1116. X
  1117. XE void FDECL(outrumor, (int,BOOLEAN_P));
  1118. X#ifdef ORACLE
  1119. XE int FDECL(doconsult, (struct monst *));
  1120. X#endif
  1121. X
  1122. X/* ### save.c ### */
  1123. X
  1124. XE int NDECL(dosave);
  1125. X#ifndef NOSAVEONHANGUP
  1126. XE int NDECL(hangup);
  1127. X#endif /* NOSAVEONHANGUP */
  1128. XE int NDECL(dosave0);
  1129. X#if defined(DGK) && !defined(OLD_TOS)
  1130. XE boolean FDECL(savelev, (int,XCHAR_P,int));
  1131. XE boolean FDECL(swapin_file, (int));
  1132. X#else /* DGK && !OLD_TOS */
  1133. XE void FDECL(savelev, (int, XCHAR_P));
  1134. X#endif /* DGK && !OLD_TOS */
  1135. X#ifdef ZEROCOMP
  1136. XE void FDECL(bflush, (int));
  1137. X#endif
  1138. XE void FDECL(bwrite, (int,genericptr_t,unsigned int));
  1139. X#ifdef TUTTI_FRUTTI
  1140. XE void FDECL(savefruitchn, (int));
  1141. X#endif
  1142. X
  1143. X/* ### search.c ### */
  1144. X
  1145. XE int NDECL(findit);
  1146. XE int NDECL(dosearch);
  1147. XE int FDECL(dosearch0, (int));
  1148. XE int NDECL(doidtrap);
  1149. XE void FDECL(wakeup, (struct monst *));
  1150. XE void FDECL(seemimic, (struct monst *));
  1151. X
  1152. X/* ### shk.c ### */
  1153. X
  1154. XE char *FDECL(shkname, (struct monst *));
  1155. XE void FDECL(shkdead, (struct monst *));
  1156. XE void FDECL(replshk, (struct monst *,struct monst *));
  1157. XE int NDECL(inshop);
  1158. XE int FDECL(inhishop, (struct monst *));
  1159. XE boolean FDECL(tended_shop, (struct mkroom *));
  1160. XE void FDECL(obfree, (struct obj *,struct obj *));
  1161. XE int NDECL(dopay);
  1162. XE void FDECL(home_shk, (struct monst *));
  1163. XE void FDECL(make_happy_shk, (struct monst *));
  1164. XE boolean NDECL(paybill);
  1165. XE void FDECL(pay_for_door, (int,int,const char *));
  1166. XE void FDECL(addtobill, (struct obj *,BOOLEAN_P));
  1167. XE void FDECL(splitbill, (struct obj *,struct obj *));
  1168. XE void FDECL(sellobj, (struct obj *));
  1169. XE int FDECL(doinvbill, (int));
  1170. XE int FDECL(shkcatch, (struct obj *));
  1171. XE int FDECL(shk_move, (struct monst *));
  1172. XE int FDECL(online, (XCHAR_P,XCHAR_P));
  1173. XE boolean FDECL(is_fshk, (struct monst *));
  1174. XE void FDECL(shopdig, (int));
  1175. XE boolean FDECL(in_shop, (int,int));
  1176. XE boolean FDECL(costly_spot, (int,int));
  1177. XE void FDECL(check_unpaid, (struct obj *));
  1178. XE boolean FDECL(block_door, (int,int));
  1179. XE boolean FDECL(block_entry, (int,int));
  1180. X
  1181. X/* ### shknam.c ### */
  1182. X
  1183. XE void FDECL(stock_room, (const struct shclass *,struct mkroom *));
  1184. XE int FDECL(saleable, (int,struct obj *));
  1185. XE int FDECL(get_shop_item, (int));
  1186. X
  1187. X/* ### sit.c ### */
  1188. X
  1189. X#if defined(THRONES) || defined(SPELLS)
  1190. XE void NDECL(take_gold);
  1191. X#endif
  1192. XE int NDECL(dosit);
  1193. XE void NDECL(rndcurse);
  1194. XE void NDECL(attrcurse);
  1195. X
  1196. X/* ### sounds.c ### */
  1197. X
  1198. XE void FDECL(verbalize, (const char *));
  1199. X#ifdef SOUNDS
  1200. XE void NDECL(dosounds);
  1201. XE void FDECL(growl, (struct monst *));
  1202. XE void FDECL(yelp, (struct monst *));
  1203. XE void FDECL(whimper, (struct monst *));
  1204. X#endif
  1205. XE struct monst *FDECL(qname, (struct monst *));
  1206. XE int NDECL(dotalk);
  1207. X
  1208. X/* ### sp_lev.c ### */
  1209. X
  1210. X#ifdef STRONGHOLD
  1211. XE boolean FDECL(load_special, (const char *));
  1212. X#endif /* STRONGHOLD /**/
  1213. X
  1214. X/* ### spell.c ### */
  1215. X#ifdef SPELLS
  1216. X#ifdef OVERLAY
  1217. XE int NDECL(learn);
  1218. X#endif
  1219. XE int FDECL(study_book, (struct obj *));
  1220. XE int NDECL(docast);
  1221. XE int FDECL(spelleffects, (int, BOOLEAN_P));
  1222. XE void NDECL(losespells);
  1223. XE int NDECL(dovspell);
  1224. X#endif /* SPELLS */
  1225. X
  1226. X/* ### steal.c ### */
  1227. X
  1228. X#ifdef OVERLAY
  1229. XE int NDECL(stealarm);
  1230. X#endif
  1231. XE long NDECL(somegold);
  1232. XE void FDECL(stealgold, (struct monst *));
  1233. XE int FDECL(steal, (struct monst *));
  1234. XE void FDECL(mpickobj, (struct monst *,struct obj *));
  1235. XE void FDECL(stealamulet, (struct monst *));
  1236. XE void FDECL(relobj, (struct monst *,int));
  1237. X
  1238. X/* ### termcap.c ### */
  1239. X
  1240. XE void NDECL(startup);
  1241. XE void NDECL(start_screen);
  1242. XE void NDECL(end_screen);
  1243. X#ifdef CLIPPING
  1244. XE boolean FDECL(win_curs, (int,int));
  1245. X#endif
  1246. XE void FDECL(curs, (int,int));
  1247. XE void FDECL(cmov, (int,int));
  1248. XE void FDECL(xputc, (CHAR_P));
  1249. XE void FDECL(xputs, (const char *));
  1250. XE void NDECL(cl_end);
  1251. XE void NDECL(clear_screen);
  1252. XE void NDECL(home);
  1253. XE void NDECL(standoutbeg);
  1254. XE void NDECL(standoutend);
  1255. XE void NDECL(revbeg);
  1256. X#if 0
  1257. XE void NDECL(boldbeg);
  1258. XE void NDECL(blinkbeg);
  1259. XE void NDECL(dimbeg);
  1260. X#endif
  1261. XE void NDECL(m_end);
  1262. XE void NDECL(backsp);
  1263. XE void NDECL(bell);
  1264. XE void NDECL(graph_on);
  1265. XE void NDECL(graph_off);
  1266. XE void NDECL(delay_output);
  1267. XE void NDECL(cl_eos);
  1268. X
  1269. X/* ### timeout.c ### */
  1270. X
  1271. XE void NDECL(timeout);
  1272. XE void NDECL(hatch_eggs);
  1273. X
  1274. X/* ### topl.c ### */
  1275. X
  1276. XE int NDECL(doredotopl);
  1277. XE void NDECL(remember_topl);
  1278. XE void FDECL(addtopl, (const char *));
  1279. XE void NDECL(more);
  1280. XE void FDECL(cmore, (const char *));
  1281. XE void NDECL(clrlin);
  1282. X#ifdef NEED_VARARGS
  1283. X# if defined(USE_STDARG) || defined(USE_VARARGS)
  1284. XE void FDECL(vpline, (const char *, va_list));
  1285. X# endif
  1286. X#endif
  1287. XE void VDECL(pline, (const char *,...));
  1288. XE void VDECL(Norep, (const char *,...));
  1289. XE void VDECL(You, (const char *,...));
  1290. XE void VDECL(Your, (const char *,...));
  1291. XE void VDECL(kludge, (const char *,const char *,...));
  1292. XE void FDECL(putsym, (CHAR_P));
  1293. XE void FDECL(putstr, (const char *));
  1294. XE char FDECL(yn_function, (const char *,CHAR_P));
  1295. XE void VDECL(impossible, (const char *,...));
  1296. X
  1297. X/* ### topten.c ### */
  1298. X
  1299. XE void FDECL(topten, (int));
  1300. XE void FDECL(prscore, (int,char **));
  1301. XE struct obj *FDECL(tt_oname, (struct obj *));
  1302. X
  1303. X/* ### track.c ### */
  1304. X
  1305. XE void NDECL(initrack);
  1306. XE void NDECL(settrack);
  1307. XE coord *FDECL(gettrack, (int,int));
  1308. X
  1309. X/* ### trap.c ### */
  1310. X
  1311. XE boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P));
  1312. XE struct trap *FDECL(maketrap, (int,int,int));
  1313. XE int FDECL(teleok, (int,int));
  1314. XE void FDECL(dotrap, (struct trap *));
  1315. XE int FDECL(mintrap, (struct monst *));
  1316. XE void FDECL(selftouch, (const char *));
  1317. XE void NDECL(float_up);
  1318. XE int NDECL(float_down);
  1319. XE void NDECL(tele);
  1320. XE void FDECL(teleds, (int,int));
  1321. XE int NDECL(dotele);
  1322. XE void FDECL(placebc, (int));
  1323. XE void NDECL(unplacebc);
  1324. XE void NDECL(level_tele);
  1325. XE void NDECL(drown);
  1326. X#ifdef SPELLS
  1327. XE void FDECL(drain_en, (int));
  1328. X#endif
  1329. XE int NDECL(dountrap);
  1330. XE void FDECL(chest_trap, (struct obj *,int));
  1331. XE void NDECL(wake_nearby);
  1332. XE void FDECL(deltrap, (struct trap *));
  1333. XE struct trap *FDECL(t_at, (int,int));
  1334. XE void FDECL(b_trapped, (const char *));
  1335. XE boolean NDECL(unconscious);
  1336. X
  1337. X/* ### u_init.c ### */
  1338. X
  1339. XE void NDECL(u_init);
  1340. XE void NDECL(plnamesuffix);
  1341. X
  1342. X/* ### uhitm.c ### */
  1343. X
  1344. XE struct monst *FDECL(clone_mon, (struct monst *));
  1345. XE boolean FDECL(special_case, (struct monst *));
  1346. XE schar FDECL(find_roll_to_hit, (struct monst *));
  1347. XE boolean FDECL(attack, (struct monst *));
  1348. XE boolean FDECL(hmon, (struct monst *,struct obj *,int));
  1349. XE int FDECL(damageum, (struct monst *, struct attack *));
  1350. XE void FDECL(missum, (struct monst *, struct attack *));
  1351. XE int FDECL(passive, (struct monst *,BOOLEAN_P,int,BOOLEAN_P));
  1352. XE void FDECL(stumble_onto_mimic, (struct monst *));
  1353. X
  1354. X/* ### unixmain.c ### */
  1355. X
  1356. X#ifdef UNIX
  1357. XE void FDECL(glo, (int));
  1358. XE void NDECL(askname);
  1359. X#endif /* UNIX */
  1360. X
  1361. X/* ### unixtty.c ### */
  1362. X
  1363. X#ifdef UNIX
  1364. XE void NDECL(gettty);
  1365. XE void FDECL(settty, (const char *));
  1366. XE void NDECL(setftty);
  1367. XE void NDECL(intron);
  1368. XE void NDECL(introff);
  1369. XE void VDECL(error, (const char *,...));
  1370. X#endif /* UNIX */
  1371. X
  1372. X/* ### unixunix.c ### */
  1373. X
  1374. X#ifdef UNIX
  1375. XE void NDECL(setrandom);
  1376. XE int NDECL(getyear);
  1377. XE char *NDECL(getdate);
  1378. XE int NDECL(phase_of_the_moon);
  1379. XE int NDECL(night);
  1380. XE int NDECL(midnight);
  1381. XE void FDECL(gethdate, (char *));
  1382. XE int FDECL(uptodate, (int));
  1383. XE void NDECL(getlock);
  1384. XE void FDECL(regularize, (char *));
  1385. X#endif /* UNIX */
  1386. X
  1387. X/* ### vault.c ### */
  1388. X
  1389. XE void NDECL(invault);
  1390. XE int FDECL(gd_move, (struct monst *));
  1391. XE void NDECL(paygd);
  1392. XE boolean NDECL(gd_sound);
  1393. X
  1394. X/* ### version.c ### */
  1395. X
  1396. XE int NDECL(doversion);
  1397. XE int NDECL(doextversion);
  1398. X#ifdef MSDOS
  1399. XE int FDECL(comp_times,(long));
  1400. X#endif
  1401. X
  1402. X/* ### vmsmain.c ### */
  1403. X
  1404. X#ifdef VMS
  1405. X# ifdef CHDIR
  1406. XE void FDECL(chdirx, (char *,BOOLEAN_P));
  1407. X# endif /* CHDIR */
  1408. XE void FDECL(glo, (int));
  1409. XE void NDECL(askname);
  1410. X#endif /* VMS */
  1411. X
  1412. X/* ### vmsmisc.c ### */
  1413. X
  1414. X#ifdef VMS
  1415. XE void NDECL(vms_abort);
  1416. XE void FDECL(vms_exit, (int));
  1417. X#endif /* VMS */
  1418. X
  1419. X/* ### vmstty.c ### */
  1420. X
  1421. X#ifdef VMS
  1422. XE void NDECL(gettty);
  1423. XE void FDECL(settty, (char *));
  1424. XE void NDECL(setftty);
  1425. XE void NDECL(intron);
  1426. XE void NDECL(introff);
  1427. XE void VDECL(error, (char *,...));
  1428. X#endif /* VMS */
  1429. X
  1430. X/* ### vmsunix.c ### */
  1431. X
  1432. X#ifdef VMS
  1433. XE void NDECL(setrandom);
  1434. XE int NDECL(getyear);
  1435. XE char *NDECL(getdate);
  1436. XE int NDECL(phase_of_the_moon);
  1437. XE int NDECL(night);
  1438. XE int NDECL(midnight);
  1439. XE void FDECL(gethdate, (char *));
  1440. XE int FDECL(uptodate, (int));
  1441. XE void NDECL(getlock);
  1442. XE void FDECL(regularize, (char *));
  1443. XE int FDECL(vms_creat, (char *,unsigned int));
  1444. XE int NDECL(vms_getuid);
  1445. XE void NDECL(privoff);
  1446. XE void NDECL(privon);
  1447. X# ifdef SHELL
  1448. XE int NDECL(dosh);
  1449. X# endif
  1450. X#endif /* VMS */
  1451. X
  1452. X/* ### weapon.c ### */
  1453. X
  1454. XE int FDECL(hitval, (struct obj *,struct permonst *));
  1455. XE int FDECL(dmgval, (struct obj *,struct permonst *));
  1456. XE void NDECL(set_uasmon);
  1457. XE struct obj *FDECL(select_rwep, (struct monst *));
  1458. XE struct obj *FDECL(select_hwep, (struct monst *));
  1459. XE int NDECL(abon);
  1460. XE int NDECL(dbon);
  1461. X
  1462. X/* ### were.c ### */
  1463. X
  1464. XE void FDECL(were_change, (struct monst *));
  1465. XE void FDECL(new_were, (struct monst *));
  1466. XE boolean FDECL(were_summon, (struct permonst *,BOOLEAN_P));
  1467. X#ifdef POLYSELF
  1468. XE void NDECL(you_were);
  1469. X#endif /* POLYSELF */
  1470. X
  1471. X/* ### wield.c ### */
  1472. X
  1473. XE void FDECL(setuwep, (struct obj *));
  1474. XE void NDECL(uwepgone);
  1475. XE int NDECL(dowield);
  1476. XE void NDECL(corrode_weapon);
  1477. XE int FDECL(chwepon, (struct obj *,int));
  1478. XE int FDECL(welded, (struct obj *));
  1479. XE void FDECL(weldmsg, (struct obj *,BOOLEAN_P));
  1480. X
  1481. X/* ### wizard.c ### */
  1482. X
  1483. XE void NDECL(amulet);
  1484. XE int FDECL(mon_has_amulet, (struct monst *));
  1485. XE int FDECL(wiz_get_amulet, (struct monst *));
  1486. XE void NDECL(aggravate);
  1487. XE void NDECL(clonewiz);
  1488. X#ifdef HARD
  1489. XE void NDECL(nasty);
  1490. XE void NDECL(resurrect);
  1491. XE void NDECL(intervene);
  1492. XE void FDECL(wizdead, (struct monst *));
  1493. X#endif /* HARD */
  1494. XE void FDECL(cuss, (struct monst *));
  1495. X
  1496. X/* ### worm.c ### */
  1497. X
  1498. X#ifdef WORM
  1499. XE int FDECL(getwn, (struct monst *));
  1500. XE void FDECL(initworm, (struct monst *));
  1501. XE void FDECL(worm_move, (struct monst *));
  1502. XE void FDECL(worm_nomove, (struct monst *));
  1503. XE void FDECL(wormdead, (struct monst *));
  1504. XE void FDECL(wormhit, (struct monst *));
  1505. XE void FDECL(wormsee, (unsigned int));
  1506. XE void FDECL(cutworm, (struct monst *,XCHAR_P,XCHAR_P,unsigned));
  1507. X#endif /* WORM */
  1508. X
  1509. X/* ### worn.c ### */
  1510. X
  1511. XE void FDECL(setworn, (struct obj *,long));
  1512. XE void FDECL(setnotworn, (struct obj *));
  1513. X
  1514. X/* ### write.c ### */
  1515. X
  1516. XE void FDECL(dowrite, (struct obj *));
  1517. X
  1518. X/* ### zap.c ### */
  1519. X
  1520. X#ifdef OVERLAY
  1521. XE int FDECL(bhito, (struct obj *, struct obj *));
  1522. XE int FDECL(bhitm, (struct monst *, struct obj *));
  1523. X#endif
  1524. XE struct monst *FDECL(revive, (struct obj *,BOOLEAN_P));
  1525. XE int FDECL(zappable, (struct obj *));
  1526. XE void FDECL(zapnodir, (struct obj *));
  1527. XE int NDECL(dozap);
  1528. XE int FDECL(zapyourself, (struct obj *));
  1529. XE void FDECL(weffects, (struct obj *));
  1530. XE const char *FDECL(exclam, (int));
  1531. XE void FDECL(hit, (const char *,struct monst *,const char *));
  1532. XE void FDECL(miss, (const char *,struct monst *));
  1533. XE struct monst *FDECL(bhit, (int,int,int,CHAR_P,int FDECL((*), (struct monst *, struct obj *)),
  1534. X  int FDECL((*), (struct obj *, struct obj *)),struct obj *));
  1535. XE struct monst *FDECL(boomhit, (int,int));
  1536. XE void FDECL(buzz, (int,int,XCHAR_P,XCHAR_P,int,int));
  1537. XE void FDECL(rlocgold, (struct gold *));
  1538. XE void FDECL(rloco, (struct obj *));
  1539. XE void FDECL(fracture_rock, (struct obj *));
  1540. XE boolean FDECL(break_statue, (struct obj *));
  1541. XE void FDECL(destroy_item, (int,int));
  1542. XE int FDECL(destroy_mitem, (struct monst *,int,int));
  1543. XE int FDECL(resist, (struct monst *,CHAR_P,int,int));
  1544. XE void NDECL(makewish);
  1545. X
  1546. X#endif /* !MAKEDEFS_C && !LEV_LEX_C */
  1547. X
  1548. X#undef E
  1549. X
  1550. X#endif /* EXTERN_H /**/
  1551. END_OF_FILE
  1552. if test 42056 -ne `wc -c <'include/extern.h'`; then
  1553.     echo shar: \"'include/extern.h'\" unpacked with wrong size!
  1554. fi
  1555. # end of 'include/extern.h'
  1556. if test -f 'others/Makefile.os2' -a "${1}" != "-c" ; then 
  1557.   echo shar: Renaming existing file \"'others/Makefile.os2'\" to \"'others/Makefile.os2.orig'\"
  1558.   mv -f 'others/Makefile.os2' 'others/Makefile.os2.orig'
  1559. fi
  1560. echo shar: Extracting \"'others/Makefile.os2'\" \(12677 characters\)
  1561. sed "s/^X//" >'others/Makefile.os2' <<'END_OF_FILE'
  1562. X#    SCCS Id: @(#)Makefile.os2    3.0    90/01/20
  1563. X#    OS/2 NetHack 3.0 Makefile for Microsoft(tm) C 5.1 -- Timo Hakulinen
  1564. X#
  1565. X#    NDMAKE ver 4.5 is required, MS-MAKE will not work. MS-NMAKE
  1566. X#    may work but requires probably modifications to some targets.
  1567. X#
  1568. X#    Copy pctty.c, pcunix.c, pcmain.c, msdos.c and this file
  1569. X#    (+ termcap sources if used) into $(SRC) directory, rename
  1570. X#    this file to "makefile" (important, some targets rely on it),
  1571. X#    compile and link in real mode inside $(SRC).
  1572. X#
  1573. X#    When using CodeView versions earlier than ver. 2.3, define
  1574. X#    OS2_CODEVIEW in pcconf.h and set HACKDIR (+ TERM and TERMCAP
  1575. X#    if used) in OS/2 config.sys. Otherwise path searches may fail.
  1576. X#
  1577. X#    Note that $(GAMEDIR) must exist prior to compilation.
  1578. X#
  1579. X# Large memory model
  1580. XCC    = cl
  1581. XLINK    = link
  1582. XMODEL    = L
  1583. X
  1584. X# $(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.
  1585. XMAKEBIN    = make
  1586. X
  1587. X# For those of us who have these on PC.
  1588. X#YACC    = yacc
  1589. X#LEX    = lex
  1590. XYACC    = bison -y
  1591. XLEX    = flex
  1592. X# Standard file names may vary in PC installations.
  1593. XYTABC    = y_tab.c
  1594. XYTABH    = y_tab.h
  1595. XLEXYYC    = lexyy.c
  1596. X
  1597. X# Directories (makedefs hardcodes these, don't change them).
  1598. XINCL    = ..\include
  1599. XAUX    = ..\auxil
  1600. XSRC    = ..\src
  1601. XOBJ    = $(SRC)\o2
  1602. X
  1603. X# The game name and description.
  1604. XGAME    = nethack
  1605. XGAMEDES = NetHack 3.0
  1606. X
  1607. X# The game directory.
  1608. XGAMEDIR = \games\$(GAME)
  1609. X
  1610. X# Memory model, compile only, disable optimization, remove stack probes,
  1611. X# 80286 instruction set, dedicated datasegment for items >= 5 bytes,
  1612. X# pack structures on 1 byte boundaries, generate code for 8087
  1613. X# coprocessor, compiler warning level, include file path.
  1614. XCFLAGS    = /A$(MODEL) /c /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /W1 /I$(INCL) $(CDFLAGS)
  1615. X
  1616. X# + prepare for CodeView symbolic debugger.
  1617. XCDFLAGS =
  1618. X#CDFLAGS = /Zi
  1619. X
  1620. X# Don't ignore case in symbols, no default lib search, stack 4096 bytes.
  1621. X# (actually a bit of overkill), allow max 1024 segments in program.
  1622. XLFLAGS    = /noig /nod /stack:4096 /seg:1024 $(LDFLAGS)
  1623. X
  1624. X# + prepare for CodeView symbolic debugger.
  1625. XLDFLAGS =
  1626. X#LDFLAGS = /CO
  1627. X
  1628. X# Real mode C libraries for 8087 coprocessor (change if necessary).
  1629. XRLIBS    = $(MODEL)libc7r
  1630. X
  1631. X# Protected mode C libraries for 8087 (change if necessary),
  1632. X# OS/2 API entry points.
  1633. XPLIBS    = $(MODEL)libc7p doscalls
  1634. X
  1635. X# Module definition file for OS/2.
  1636. XOS2DEFS    = $(GAME).def
  1637. X
  1638. X# Target system.
  1639. XTARG    = pc
  1640. X
  1641. X# The default make target (so just typing 'make' is useful).
  1642. Xdefault: $(GAME)
  1643. X
  1644. X# If you have yacc and lex programs and make any changes, comment out the
  1645. X# upper two lines and uncomment the lower two.
  1646. Xdo_yacc: yacc_msg
  1647. Xdo_lex:  lex_msg
  1648. X#do_yacc: yacc_act
  1649. X#do_lex:  lex_act
  1650. X
  1651. X# Optional high-quality BSD random number generation routines (see pcconf.h).
  1652. X# Set to nothing if not used.
  1653. XRANDOM    = $(OBJ)\random.o
  1654. X#RANDOM    =
  1655. X
  1656. X# Termcap routines.
  1657. XTERMCAPS = termlib.lib
  1658. X
  1659. X# If TERMLIB defined in pcconf.h, comment out the upper line and
  1660. X# uncomment the lower.
  1661. XTERMLIB =
  1662. X#TERMLIB = $(TERMCAPS)
  1663. X
  1664. X######################################################################
  1665. X#
  1666. X# Nothing below this line should have to be changed.
  1667. X#
  1668. X# Other things that have to be reconfigured are in config.h,
  1669. X# {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h.
  1670. X#
  1671. X
  1672. X# The game filename.
  1673. XGAMEFILE = $(GAMEDIR)\$(GAME).exe
  1674. X
  1675. X# For NDMAKE, to handle the .o suffix.
  1676. X.SUFFIXES: .exe .o .c .y .l
  1677. X
  1678. X.c.o:
  1679. X    $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
  1680. X
  1681. X# Termcap objects.
  1682. XTERMOBJS = $(OBJ)\tgetent.o $(OBJ)\tgetflag.o $(OBJ)\tgetnum.o \
  1683. X       $(OBJ)\tgetstr.o $(OBJ)\tgoto.o $(OBJ)\tputs.o $(OBJ)\isdigit.o \
  1684. X       $(OBJ)\fgetlr.o
  1685. X
  1686. X# Object files for makedefs.
  1687. XMAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\alloc.o $(OBJ)\monst.o $(OBJ)\objects.o \
  1688. X       $(OBJ)\panic.o
  1689. X
  1690. X# Object files for special levels compiler.
  1691. XSPLEVOBJS = $(OBJ)\lev_comp.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o \
  1692. X        $(OBJ)\alloc.o $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o
  1693. X
  1694. XVOBJ =    $(OBJ)\allmain.o $(OBJ)\alloc.o    $(OBJ)\apply.o    $(OBJ)\artifact.o \
  1695. X    $(OBJ)\attrib.o  $(OBJ)\bones.o    $(OBJ)\cmd.o      $(OBJ)\dbridge.o \
  1696. X    $(OBJ)\decl.o    $(OBJ)\demon.o    $(OBJ)\do.o       $(OBJ)\do_name.o \
  1697. X    $(OBJ)\do_wear.o $(OBJ)\dog.o      $(OBJ)\dogmove.o  $(OBJ)\dokick.o \
  1698. X    $(OBJ)\dothrow.o $(OBJ)\eat.o      $(OBJ)\end.o      $(OBJ)\engrave.o \
  1699. X    $(OBJ)\exper.o   $(OBJ)\extralev.o $(OBJ)\fountain.o $(OBJ)\getline.o \
  1700. X    $(OBJ)\hack.o    $(OBJ)\invent.o   $(OBJ)\lock.o     $(OBJ)\mail.o \
  1701. X    $(OBJ)\main.o    $(OBJ)\makemon.o  $(OBJ)\mcastu.o   $(OBJ)\mhitm.o \
  1702. X    $(OBJ)\mhitu.o   $(OBJ)\mklev.o    $(OBJ)\mkmaze.o   $(OBJ)\mkobj.o \
  1703. X    $(OBJ)\mkroom.o  $(OBJ)\mon.o      $(OBJ)\mondata.o  $(OBJ)\msdos.o \
  1704. X    $(OBJ)\monmove.o $(OBJ)\monst.o    $(OBJ)\mthrowu.o  $(OBJ)\music.o \
  1705. X     $(OBJ)\o_init.o  $(OBJ)\objects.o  $(OBJ)\objnam.o   $(OBJ)\options.o \
  1706. X    $(OBJ)\pager.o   $(OBJ)\pickup.o   $(OBJ)\polyself.o $(OBJ)\potion.o \
  1707. X    $(OBJ)\pray.o    $(OBJ)\pri.o      $(OBJ)\priest.o   $(OBJ)\prisym.o \
  1708. X    $(RANDOM)        $(OBJ)\read.o     $(OBJ)\restore.o  $(OBJ)\rip.o \
  1709. X    $(OBJ)\rnd.o     $(OBJ)\rumors.o   $(OBJ)\save.o     $(OBJ)\search.o \
  1710. X    $(OBJ)\shk.o     $(OBJ)\shknam.o   $(OBJ)\sit.o      $(OBJ)\sounds.o \
  1711. X    $(OBJ)\sp_lev.o  $(OBJ)\spell.o    $(OBJ)\steal.o    $(OBJ)\termcap.o \
  1712. X    $(OBJ)\timeout.o $(OBJ)\topl.o     $(OBJ)\topten.o   $(OBJ)\track.o \
  1713. X    $(OBJ)\trap.o    $(OBJ)\tty.o      $(OBJ)\u_init.o   $(OBJ)\uhitm.o \
  1714. X    $(OBJ)\unix.o    $(OBJ)\vault.o    $(OBJ)\weapon.o   $(OBJ)\were.o \
  1715. X    $(OBJ)\wield.o   $(OBJ)\wizard.o   $(OBJ)\worm.o     $(OBJ)\worn.o \
  1716. X    $(OBJ)\write.o   $(OBJ)\zap.o
  1717. XHOBJ =    $(VOBJ) $(OBJ)\version.o
  1718. X
  1719. XPCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
  1720. X         $(INCL)\extern.h $(INCL)\def_os2.h 
  1721. XGLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  1722. XCONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  1723. XTRAP_H       = $(INCL)\trap.h
  1724. XPERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  1725. XYOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  1726. X         $(INCL)\monst.h $(INCL)\youprop.h
  1727. XDECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  1728. X         $(INCL)\onames.h $(INCL)\pm.h
  1729. XHACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  1730. X         $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
  1731. X         $(INCL)\rm.h
  1732. X
  1733. X# The main target
  1734. X$(GAMEDIR)\$(GAME).exe: $(OBJ) $(HOBJ) $(OS2DEFS) $(TERMLIB)
  1735. X    $(LINK) $(HOBJ),$(GAMEDIR)\$(GAME),$(GAME),$(PLIBS) $(TERMLIB),$(OS2DEFS) $(LFLAGS) ;
  1736. X
  1737. X# NDMAKE automatically generates LINK and LIB response files.
  1738. X
  1739. X$(GAME): $(GAMEDIR)\$(GAME).exe
  1740. X$(GAME).exe: $(GAMEDIR)\$(GAME).exe
  1741. X
  1742. Xall:    $(OBJ) makedefs lev_comp $(GAME) auxil
  1743. X    @echo Done.
  1744. X
  1745. X$(OBJ):
  1746. X    mkdir $(OBJ)
  1747. X
  1748. X# Target for termcap routines.
  1749. X
  1750. X$(TERMCAPS): $(TERMOBJS)
  1751. X    lib $(TERMCAPS) -+ $(TERMOBJS) ;
  1752. X
  1753. X# Targets for makedefs.
  1754. X
  1755. Xmakedefs: makedefs.exe
  1756. Xmakedefs.exe: $(MAKEOBJS)
  1757. X    $(LINK) $(MAKEOBJS),,,$(RLIBS) $(LFLAGS) ;
  1758. X
  1759. X$(OBJ)\makedefs.o: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
  1760. X
  1761. X# Targets for the special levels compiler.
  1762. X
  1763. Xlev_comp: lev_comp.exe
  1764. Xlev_comp.exe: $(SPLEVOBJS)
  1765. X    $(LINK) $(SPLEVOBJS),,,$(RLIBS) $(LFLAGS) ;
  1766. X
  1767. X$(OBJ)\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h lev_comp.c
  1768. X    $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
  1769. X$(OBJ)\lev_lex.o:  $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h lev_lex.c
  1770. X    $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $*.c
  1771. X$(OBJ)\lev_main.o: $(HACK_H) $(INCL)\sp_lev.h
  1772. X
  1773. Xlev_comp.c: lev_comp.y
  1774. X    $(MAKEBIN) do_yacc
  1775. X
  1776. Xlev_lex.c:  lev_comp.l
  1777. X    $(MAKEBIN) do_lex
  1778. X
  1779. Xyacc_msg:
  1780. X    @echo lev_comp.y has changed. To update lev_comp.c and lev_comp.h run YACC.
  1781. X
  1782. Xyacc_act:
  1783. X    $(YACC) -d lev_comp.y
  1784. X    copy $(YTABC) lev_comp.c
  1785. X    copy $(YTABH) $(INCL)\lev_comp.h
  1786. X    del $(YTABC)
  1787. X    del $(YTABH)
  1788. X
  1789. Xlex_msg:
  1790. X    @echo lev_comp.l has changed. To update lev_lex.c run LEX.
  1791. X
  1792. Xlex_act:
  1793. X    $(LEX) lev_comp.l
  1794. X    copy $(LEXYYC) lev_lex.c
  1795. X    del $(LEXYYC)
  1796. X
  1797. X#
  1798. X#    The following include files depend on makedefs to be created.
  1799. X#
  1800. X#    date.h should be remade any time any of the source or include code
  1801. X#    is modified.
  1802. X#
  1803. X$(INCL)\date.h: $(VOBJ) makedefs.exe
  1804. X    .\makedefs -v
  1805. X
  1806. X$(INCL)\trap.h:    makedefs.exe
  1807. X    .\makedefs -t
  1808. X
  1809. X$(INCL)\onames.h: makedefs.exe
  1810. X    .\makedefs -o
  1811. X
  1812. X$(INCL)\pm.h: makedefs.exe
  1813. X    .\makedefs -p
  1814. X
  1815. Xdata:    $(AUX)\data.base makedefs.exe
  1816. X    .\makedefs -d
  1817. X
  1818. Xrumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
  1819. X    .\makedefs -r
  1820. X
  1821. X#
  1822. X#    The following programs vary depending on what OS you are using.
  1823. X#
  1824. X$(OBJ)\main.o: $(HACK_H) $(TARG)main.c
  1825. X    $(CC) $(CFLAGS) /Fo$(OBJ)\main.o $(TARG)main.c
  1826. X
  1827. X$(OBJ)\tty.o:  $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
  1828. X    $(CC) $(CFLAGS) /Fo$(OBJ)\tty.o $(TARG)tty.c
  1829. X
  1830. X$(OBJ)\unix.o: $(HACK_H) $(TARG)unix.c
  1831. X    $(CC) $(CFLAGS) /Fo$(OBJ)\unix.o $(TARG)unix.c
  1832. X
  1833. X#
  1834. X# Secondary targets
  1835. X#
  1836. X
  1837. Xauxil:    spec_levs data rumors
  1838. X    xcopy $(AUX)\*. $(GAMEDIR)
  1839. X
  1840. Xspec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
  1841. X    lev_comp $(AUX)\castle.des
  1842. X    lev_comp $(AUX)\endgame.des
  1843. X    lev_comp $(AUX)\tower.des
  1844. X    xcopy castle $(GAMEDIR)
  1845. X    del castle
  1846. X    xcopy endgame $(GAMEDIR)
  1847. X    del endgame
  1848. X    xcopy tower? $(GAMEDIR)
  1849. X    del tower?
  1850. X
  1851. X$(OS2DEFS):
  1852. X    echo NAME $(GAME) WINDOWCOMPAT> $(OS2DEFS)
  1853. X    echo DESCRIPTION '$(GAMEDES)'>> $(OS2DEFS)
  1854. X    echo PROTMODE>> $(OS2DEFS)
  1855. X    echo EXETYPE OS2>> $(OS2DEFS)
  1856. X
  1857. Xclean:
  1858. X    del $(OBJ)\*.o
  1859. X    rmdir $(OBJ)
  1860. X
  1861. Xspotless: clean
  1862. X    del $(INCL)\date.h
  1863. X    del $(INCL)\onames.h
  1864. X    del $(INCL)\pm.h
  1865. X    del makedefs.exe
  1866. X    del lev_comp.exe
  1867. X    del $(TERMCAPS)
  1868. X    del *.def
  1869. X    del *.map
  1870. X    del $(AUX)\data
  1871. X    del $(AUX)\rumors
  1872. X    del castle
  1873. X    del endgame
  1874. X    del tower?
  1875. X
  1876. X#
  1877. X# Other dependencies
  1878. X#
  1879. X
  1880. X# GO AHEAD, DELETE THIS LINE
  1881. X
  1882. X$(OBJ)\allmain.o:  $(HACK_H)
  1883. X$(OBJ)\alloc.o:    $(CONFIG_H)
  1884. X$(OBJ)\apply.o:    $(HACK_H) $(INCL)\edog.h
  1885. X$(OBJ)\artifact.o: $(HACK_H) $(INCL)\artifact.h
  1886. X$(OBJ)\attrib.o:   $(HACK_H)
  1887. X$(OBJ)\bones.o:    $(HACK_H)
  1888. X$(OBJ)\cmd.o:      $(HACK_H) $(INCL)\func_tab.h
  1889. X$(OBJ)\dbridge.o:  $(HACK_H)
  1890. X$(OBJ)\decl.o:     $(HACK_H)
  1891. X$(OBJ)\demon.o:    $(HACK_H)
  1892. X$(OBJ)\do.o:       $(HACK_H)
  1893. X$(OBJ)\do_name.o:  $(HACK_H)
  1894. X$(OBJ)\do_wear.o:  $(HACK_H)
  1895. X$(OBJ)\dog.o:      $(HACK_H) $(INCL)\edog.h
  1896. X$(OBJ)\dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1897. X$(OBJ)\dokick.o:   $(HACK_H)
  1898. X$(OBJ)\dothrow.o:  $(HACK_H)
  1899. X$(OBJ)\eat.o:      $(HACK_H)
  1900. X$(OBJ)\end.o:      $(HACK_H) $(INCL)\eshk.h
  1901. X$(OBJ)\engrave.o:  $(HACK_H)
  1902. X$(OBJ)\exper.o:    $(HACK_H)
  1903. X$(OBJ)\extralev.o: $(HACK_H)
  1904. X$(OBJ)\fountain.o: $(HACK_H)
  1905. X$(OBJ)\getline.o:  $(HACK_H) $(INCL)\func_tab.h
  1906. X$(OBJ)\hack.o:     $(HACK_H)
  1907. X$(OBJ)\invent.o:   $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1908. X$(OBJ)\ioctl.o:    $(HACK_H)
  1909. X$(OBJ)\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h
  1910. X$(OBJ)\lock.o:     $(HACK_H)
  1911. X$(OBJ)\makemon.o:  $(HACK_H)
  1912. X$(OBJ)\mail.o:     $(HACK_H)
  1913. X$(OBJ)\mcastu.o:   $(HACK_H)
  1914. X$(OBJ)\mhitm.o:    $(HACK_H) $(INCL)\artifact.h
  1915. X$(OBJ)\mhitu.o:    $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1916. X$(OBJ)\mklev.o:    $(HACK_H)
  1917. X$(OBJ)\mkmaze.o:   $(HACK_H)
  1918. X$(OBJ)\mkobj.o:    $(HACK_H)
  1919. X$(OBJ)\mkroom.o:   $(HACK_H)
  1920. X$(OBJ)\mon.o:      $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1921. X$(OBJ)\mondata.o:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  1922. X$(OBJ)\monmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1923. X$(OBJ)\monst.o:    $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h \
  1924. X           $(INCL)\epri.h
  1925. X$(OBJ)\msdos.o:    $(HACK_H)
  1926. X$(OBJ)\mthrowu.o:  $(HACK_H)
  1927. X$(OBJ)\music.o:    $(HACK_H)
  1928. X$(OBJ)\o_init.o:   $(HACK_H) $(INCL)\onames.h
  1929. X$(OBJ)\objects.o:  $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
  1930. X$(OBJ)\objnam.o:   $(HACK_H)
  1931. X$(OBJ)\options.o:  $(HACK_H)
  1932. X$(OBJ)\pager.o:    $(HACK_H)
  1933. X$(OBJ)\panic.o:    $(CONFIG_H)
  1934. X$(OBJ)\pickup.o:   $(HACK_H)
  1935. X$(OBJ)\polyself.o: $(HACK_H)
  1936. X$(OBJ)\potion.o:   $(HACK_H)
  1937. X$(OBJ)\pray.o:     $(HACK_H)
  1938. X$(OBJ)\pri.o:      $(HACK_H) $(INCL)\termcap.h
  1939. X$(OBJ)\priest.o:   $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
  1940. X$(OBJ)\prisym.o:   $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1941. X$(OBJ)\random.o:
  1942. X$(OBJ)\read.o:     $(HACK_H)
  1943. X$(OBJ)\restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1944. X$(OBJ)\rip.o:      $(HACK_H)
  1945. X$(OBJ)\rnd.o:      $(HACK_H)
  1946. X$(OBJ)\rumors.o:   $(HACK_H)
  1947. X$(OBJ)\save.o:     $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1948. X$(OBJ)\search.o:   $(HACK_H) $(INCL)\artifact.h
  1949. X$(OBJ)\shk.o:      $(HACK_H) $(INCL)\eshk.h
  1950. X$(OBJ)\shknam.o:   $(HACK_H) $(INCL)\eshk.h
  1951. X$(OBJ)\sit.o:      $(HACK_H)
  1952. X$(OBJ)\sounds.o:   $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  1953. X$(OBJ)\sp_lev.o:   $(HACK_H) $(INCL)\sp_lev.h
  1954. X$(OBJ)\spell.o:    $(HACK_H)
  1955. X$(OBJ)\steal.o:    $(HACK_H)
  1956. X$(OBJ)\termcap.o:  $(HACK_H) $(INCL)\termcap.h
  1957. X$(OBJ)\timeout.o:  $(HACK_H)
  1958. X$(OBJ)\topl.o:     $(HACK_H)
  1959. X$(OBJ)\topten.o:   $(HACK_H)
  1960. X$(OBJ)\track.o:    $(HACK_H)
  1961. X$(OBJ)\trap.o:     $(HACK_H) $(INCL)\edog.h
  1962. X$(OBJ)\u_init.o:   $(HACK_H)
  1963. X$(OBJ)\uhitm.o:    $(HACK_H) $(INCL)\artifact.h
  1964. X$(OBJ)\vault.o:    $(HACK_H) $(INCL)\vault.h
  1965. X$(OBJ)\version.o:  $(HACK_H) $(INCL)\date.h
  1966. X$(OBJ)\weapon.o:   $(HACK_H)
  1967. X$(OBJ)\were.o:     $(HACK_H)
  1968. X$(OBJ)\wield.o:    $(HACK_H)
  1969. X$(OBJ)\wizard.o:   $(HACK_H)
  1970. X$(OBJ)\worm.o:     $(HACK_H) $(INCL)\wseg.h
  1971. X$(OBJ)\worn.o:     $(HACK_H)
  1972. X$(OBJ)\write.o:    $(HACK_H)
  1973. X$(OBJ)\zap.o:      $(HACK_H)
  1974. END_OF_FILE
  1975. if test 12677 -ne `wc -c <'others/Makefile.os2'`; then
  1976.     echo shar: \"'others/Makefile.os2'\" unpacked with wrong size!
  1977. fi
  1978. # end of 'others/Makefile.os2'
  1979. echo shar: End of archive 24 \(of 30\).
  1980. cp /dev/null ark24isdone
  1981. MISSING=""
  1982. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
  1983.     if test ! -f ark${I}isdone ; then
  1984.     MISSING="${MISSING} ${I}"
  1985.     fi
  1986. done
  1987. if test "${MISSING}" = "" ; then
  1988.     echo You have unpacked all 30 archives.
  1989.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1990. else
  1991.     echo You still need to unpack the following archives:
  1992.     echo "        " ${MISSING}
  1993. fi
  1994. ##  End of shell archive.
  1995. exit 0
  1996.